package com.ys.service.finance;

import com.ys.vo.R;

import java.math.BigDecimal;
import java.util.Map;

/**
 * 运营公司预付款管理
 */
public interface TcwOperateCompanyPrepaymentService {

	/**
	 * 新增或累加
	 * @param vgsbm 运营公司编码
	 * @param fkVid 付款账户编码
	 * @param fkVyhzh 付款账号
	 * @param fkVkhh 付款开户行
	 * @param fkVyhzhmc 付款账户名称
	 * @param vid 收款账户编码
	 * @param vyhzh 收款账号
	 * @param vkhh 收款开户行
	 * @param vyhzhmc 收款账户名称
	 * @param operateCompanyPrepaymentType 账号类型（0.公司对公账户|1.万里汇）
	 * @param preAmount 预付款金额
	 * @param invoicingAmount 开票金额
	 * @param withholdAmount 代扣代缴金额
	 * @param preReturnAmount 预付款退回金额
	 * @param remark 备注
	 * @return  R SUCCESS("成功", 0), FAILED("失败", 1); 失败原因：R.getMsg()
	 */
	R addOrAccrual(String vgsbm, String fkVid, String fkVyhzh, String fkVkhh, String fkVyhzhmc,
				   String vid, String vyhzh, String vkhh, String vyhzhmc,int operateCompanyPrepaymentType,
				   BigDecimal preAmount,BigDecimal invoicingAmount,BigDecimal withholdAmount,BigDecimal preReturnAmount,
				   String userId,int fromType,String fromBid,String remark) throws Exception ;

	/**
	 * 万里汇单据：新增或累加（收款账户为默认值）
	 * @param vgsbm 运营公司编码
	 * @param depositPlatformCode 收款平台账号Code（TCW_DepositPlatform）
	 * @param preAmount 预付款金额
	 * @param invoicingAmount 开票金额
	 * @param withholdAmount 代扣代缴金额
	 * @param preReturnAmount 预付款退回金额
	 * @param remark 备注
	 * @return  R SUCCESS("成功", 0), FAILED("失败", 1); 失败原因：R.getMsg()
	 */
	R addOrAccrualWanliInfo(String vgsbm,String depositPlatformCode,BigDecimal preAmount,
							BigDecimal invoicingAmount,BigDecimal withholdAmount,BigDecimal preReturnAmount,
							String userId,int fromType,String fromBid,String remark) throws Exception ;


	//新增
	R add(Map<String, Object> params, Long menuId) throws Exception ;



	//编辑
	R edit(Map<String, Object> params, Long menuId) throws Exception ;
}